package com.example.videoproject;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;

public class Generator {
    public static void main(String[] args) {
        //1.获取代码生成器的对象
        AutoGenerator autoGenerator=new AutoGenerator();
        //设置数据库相关配置
        DataSourceConfig dataSource=new DataSourceConfig();
        dataSource.setDriverName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://47.112.126.127:3306/video");
        dataSource.setUsername("root");
        dataSource.setPassword("66abcABC");
        autoGenerator.setDataSource(dataSource);


        //设置全局配置
        GlobalConfig globalConfig=new GlobalConfig();
        //设置代码生成后放置的位置
        globalConfig.setOutputDir(System.getProperty("user.dir")+"/src/main/java");
        globalConfig.setOpen(false);      //设置生成完毕后是否打开代码所在目录
        globalConfig.setAuthor("二组");  //设置作者
        globalConfig.setFileOverride(true);  //是否覆盖原始生成的文件
        globalConfig.setMapperName("%sDao");  //设置数据接口层文件名  %s为占位符，例：UserDao
        globalConfig.setIdType(IdType.ASSIGN_ID);  //设置Id生成策略  ，ASSIGN_ID为使用雪花算法自动生成
        //代码生成器对象加载全局配置
        autoGenerator.setGlobalConfig(globalConfig);


        //包名相关配置
        PackageConfig packageConfig =new PackageConfig();
        packageConfig.setParent("com.example.videoproject");  //设置生成的包名，与代码所在位置不冲突，二者叠加完成路径
        packageConfig.setEntity("pojo");         //设置实体类包名
        packageConfig.setMapper("dao");          //设置数据层接口包名
        //代码生成器加载包名配置
        autoGenerator.setPackageInfo(packageConfig);

        //策略设置
        StrategyConfig strategyConfig=new StrategyConfig();
        strategyConfig.setInclude("video"); //设置当前参与生成的表名
        //strategyConfig.setTablePrefix("tbl_");   //设置数据库表的前缀，模块名=数据库表名-前缀名 例：User=tbl_user-tbl_
        strategyConfig.setRestControllerStyle(true);  //是否启用Rest风格
        //strategyConfig.setVersionFieldName("version"); //设置乐观锁的对应字段
        strategyConfig.setLogicDeleteFieldName("vdeleted");  //设置逻辑删除的字段
        strategyConfig.setEntityLombokModel(true);    //是否启动lomBook
        //加载策略设置
        autoGenerator.setStrategy(strategyConfig);

        //执行生成操作
        autoGenerator.execute();
    }
}
